#pragma once

#define GAME_IsItemVisible(Unit) GAME_IsItemVisible_ASM((DWORD)Unit)

DWORD GetUnitArray();
DWORD GetUnitArraySize();
DWORD GetBuildingRequiredPtr();
BOOL __fastcall GAME_IsHero(DWORD dwClassId);
DWORD GetDistance(DWORD x1, DWORD y1, DWORD x2, DWORD y2);
DWORD GetStatValue(DWORD dwPlayerSlot, DWORD dwList);
DWORD __fastcall DecodeHealth(DWORD* pdwHealth);
DWORD InGame();
DWORD GAME_GetItemArray();
DWORD __fastcall GAME_IsItemVisible_ASM(DWORD dwUnitPtr);
DWORD GAME_IsChatBoxOpen();
DWORD __fastcall GetSelectedUnitHelper(DWORD dwPtr);
Unit* GAME_GetSelectedUnit();
VOID __fastcall GAME_CallUnitLifeFunction(DWORD dwUnitPtrList, DWORD pdwBuffer);
VOID __fastcall GAME_CallUnitMaxLifeFunction(DWORD dwUnitPtrList, DWORD pdwBuffer);
DWORD GAME_GetUnitLife(Unit* pUnit);
DWORD GAME_GetUnitMaxLife(Unit* pUnit);
DWORD __fastcall GetAutomapPos_I(DWORD dwUnitAddr);
VOID GetAutomapPos(Unit* pUnit, POINT* lpPoint);
VOID DrawPixel(DWORD dwX, DWORD dwY, DWORD dwColor);
VOID SendPacket(BYTE* pPacket, DWORD dwSize);
VOID __fastcall test(DWORD dwX, DWORD dwY);
CHAR* GetIcon(DWORD dwRace);
DWORD __fastcall GetPlayerStartLocationX(Player* pPlayer, float* fX);
DWORD __fastcall GetPlayerStartLocationY(Player* pPlayer, float* fY);
DWORD __stdcall GetUnitAnimationId(Unit* pUnit);
#define GetUnits() (Unit**)GetUnitArray()